Part 2: How to get started (OptiX 7.0-7.4)
Published:
OptiX 7.6 (the latest version is mostly recommended)
How to start learning OptiX 7.+
First, go through Keith Morley’s Blog: How to Get Started with OptiX 7
Then watch Ingo Wald’s SIGGRAPH 2019 talk, and read the slides, publicly available in the optix7course repository. The codes access OptiX 7.0-7.4 version, and CUDA 10.1-11.7 latest.
Ingo Wald also worked on an OptiX wrapper library OWL-Project, that could be even easier to follow as modules, SBT, pipelines, etc. are handled easily. If you want to use the wrapper library, you may surely give a try.
I will strongly suggest Shunji Kiuchi’s blog where he has implemented the Ray Tracing in One Weekend algorithms with the latest OptiX 7.4. His github repository explained every step very easily. Similar to
OWL-Project
, he is also working on another OptiX wrapper library, PRayGround that supports OptiX 7.3-7.4.You also need to read the API specifications at the OptiX 7.4 official documentation (All in One Place)
At the same time, check the samples that come with SDK
After getting fluency over the API, Detlef Roettger’s OptiX_Apps 👍🏼 repository is the best resource to practice OptiX advanced skills. The repository is currently on OptiX 7.6
You may find an interesting codebase on NV’s Github Repository. Once you have gained much fluency, I will suggest you go through OptiX Utility, currently on OptiX 7.4, CUDA 11.5
If you have queries, that you should have, join the OptiX Discussion Forum. There is always great talk on GTC on Demand, but you need to get registered at NVIDIA first.
OptiX 6.5
If you want to still check out the older OptiX version, e.g., 6.5 (not recommended), João Vítor Silva wrote a good blog on ray tracing the next week, and ray tracing for rest of your life based on RTOW with OptiX 6.5. The best resource for OptiX 6.5 is probably the OptiX Advanced Samples by Detlef Roettger. This NVIDIA GameWorks Doc. has also well explained the workflow of OptiX. Optix-PathTracer is another awesome repository implemented with OptiX 5.0.
Some equivalent terminologies:
OptiX 6.5 | OptiX 7.0 and Latest |
---|---|
Buffers | CUDA Pointers |
Variables | shader binding table |
Global Scoped Variables | Launch Parameters |
Semantic Variables | query functions to access internal state |
Amorphous programs | Tagged Program Types |
Geometry Group | Geometry Acceleraion Structure |
Group | Instance Acceleration Structure |
Transform | just input to instance Acceleration Structure build |